The present invention is in the area of power management for computer systems, and relates specifically to methods and apparatus for saving contents of random access memory (RAM) before performing suspend mode in power management.
Power management for computer systems has become a significant issue as the number and size of computer systems continues to increase dramatically. Virtually all computer manufacturers are now offering options for power management, wherein power is removed from selected subsystems for idle computers.
Typically, power-saving computers employ as many as four levels, or modes, of power consumption. A first mode, often called peak mode, provides for the power on surge, which, for a typical desktop computer, may be in the area of 90 to 100 watts. A second mode, which may be considered normal mode, provides for full, routine operation, including full expansion capabilities, and may be, for example, in the area of 50 watts.
Most power-managed computers have a suspend mode, triggered by a period of inactivity, wherein power to peripherals and ancillary equipment is suspended, but power remains for the system CPU and RAM. This suspend mode typically consumes about 10-15 watts. Power up from suspend is relatively quick, because RAM is retained in the condition last acessed, and no time must be consumed in restoring RAM.
The most severe power-down mode in most power management schemes is often called Zero-Volt Suspend (ZVS) in the art. In this mode, power is removed from all system components except a controller, such as the keyboard controller, which is capable of sensing resumption of system activity. Use of the keyboard controller for this purpose is convenient, and other controllers might be used. In ZVS, the computer sleeps with one eye open, to power back up again whenever a user provides input, such as movement of a pointer device or a keystroke at the keyboard. Generically, the controller that is utilized to monitor for resumption of user activity while in ZVS may be called the ZVS controller.
In ZVS mode, as described above, power is removed from RAM. Still, it is highly desirable that the computer start exactly where it left off when power is restored to all operating systems. It is necessary then, that the contents of RAM be saved on a non-volatile device before power is removed from RAM. Then, in power up mode, the designated non-volatile device can be accessed to restore all of the previous contents of RAM, so activity may be resumed exactly where suspended. Commercially available power management systems operate in just this manner to allow resumption of activities where suspended.
It is quite common in modern computers to have quite large on-board RAM. Sixteen megabytes or more is not at all uncommon, and such relatively large RAM configurations are necessary for operating with some operating systems and window-type management programs, for example. In normal operation, with window-type management systems, having, perhaps, more than one application running, nearly all of a large RAM configuration may be in use.
It is also quite common in modern computer systems to have relatively large non-volatile storage available to the system. Where a twenty megabyte hard disk drive was once thought adequate, several hundred megabytes is now common.
There are at least two potential problems with ZVS in power management systems and modern computers. One is that transfer of large amounts of data from RAM to a designated non-volatile device, such as a disk drive, and subsequent restoration of the same data from the non-volatile device to RAM before resumption of operations can be time-consuming.
Another potential problem is that, even though the designated non-volatile device for saving RAM may be several times larger than the RAM configuration, there is no guarantee that there will be sufficient unused space on the device to store all of the data in RAM before initiation of a ZVS state. And, if there is insufficient space, some data may be lost, or the power-saving operations may have to be aborted.
What is clearly needed is a power management system configured to minimize the amount of information that may need to be stored to accomplish VZS, and also configured to compress the data in RAM before transfer to the designated non-volatile device, so a minimum amount of non-volatile storage space is needed.
In a preferred embodiment of the present invention, a method is provided for saving contents of random access memory (RAM) prior to power suspension in a power managed computer system, to ensure that the computer system can be restarted at the point where activity is suspended. The method has steps of (a) compressing the contents of system RAM, creating a compressed version of system RAM; and (b) storing the compressed version of system RAM on a non-volatile storage device before removing power from system RAM. In one embodiment, the non-volatile storage device is a hard disk drive, and the steps are performed in response to execution of power management software, which is, in one embodiment, a part of a BIOS.
In a further embodiment, areas used by memory management software are first identified, and zeros are stored in such areas before compression takes place. In a variation, compression is not done, but only those portions of RAM not used by memory management software are saved to a non-volatile device before power suspension.
In various embodiments, power management software is provided having the capability of the methods above described; a system BIOS is supplied with these features, and a computer is provided having power management software according to the invention.
The various embodiments of the invention provide for minimizing the storage capacity required of a peripheral non-volatile device before power suspension to the system RAM.